//package com.booter.config;
//
//import org.springframework.boot.context.properties.ConfigurationProperties;
//
//import java.time.Duration;
//import java.util.List;
//
//
//@ConfigurationProperties(prefix = "spring.data.redis")
//public class RedisProperties {
//
//
//    private int database = 0;
//    private String url;
//    private String host = "localhost";
//    private String username;
//    private String password;
//    private int port = 6379;
//    private Duration timeout;
//    private Duration connectTimeout = Duration.ofMillis(100);
//    private String clientName;
//    private ClientType clientType;
//    private Sentinel sentinel;
//    private Cluster cluster;
//    private final Ssl ssl = new Ssl();
//    private final Jedis jedis = new Jedis();
//
//    private final Lettuce lettuce = new Lettuce();
//
//    public int getDatabase() {
//        return this.database;
//    }
//
//    public void setDatabase(int database) {
//        this.database = database;
//    }
//
//    public String getUrl() {
//        return this.url;
//    }
//
//    public void setUrl(String url) {
//        this.url = url;
//    }
//
//    public String getHost() {
//        return this.host;
//    }
//
//    public void setHost(String host) {
//        this.host = host;
//    }
//
//    public String getUsername() {
//        return this.username;
//    }
//
//    public void setUsername(String username) {
//        this.username = username;
//    }
//
//    public String getPassword() {
//        return this.password;
//    }
//
//    public void setPassword(String password) {
//        this.password = password;
//    }
//
//    public int getPort() {
//        return this.port;
//    }
//
//    public void setPort(int port) {
//        this.port = port;
//    }
//
//    public Ssl getSsl() {
//        return this.ssl;
//    }
//
//    public void setTimeout(Duration timeout) {
//        this.timeout = timeout;
//    }
//
//    public Duration getTimeout() {
//        return this.timeout;
//    }
//
//    public Duration getConnectTimeout() {
//        return this.connectTimeout;
//    }
//
//    public void setConnectTimeout(Duration connectTimeout) {
//        this.connectTimeout = connectTimeout;
//    }
//
//    public String getClientName() {
//        return this.clientName;
//    }
//
//    public void setClientName(String clientName) {
//        this.clientName = clientName;
//    }
//
//    public ClientType getClientType() {
//        return this.clientType;
//    }
//
//    public void setClientType(ClientType clientType) {
//        this.clientType = clientType;
//    }
//
//    public Sentinel getSentinel() {
//        return this.sentinel;
//    }
//
//    public void setSentinel(Sentinel sentinel) {
//        this.sentinel = sentinel;
//    }
//
//    public Cluster getCluster() {
//        return this.cluster;
//    }
//
//    public void setCluster(Cluster cluster) {
//        this.cluster = cluster;
//    }
//
//    public Jedis getJedis() {
//        return this.jedis;
//    }
//
//    public Lettuce getLettuce() {
//        return this.lettuce;
//    }
//
//    public enum ClientType {
//        LETTUCE,
//        JEDIS
//    }
//
//    public static class Pool {
//
//
//        private Boolean enabled;
//        private int maxIdle = 8;
//        private int minIdle = 0;
//        private int maxActive = 8;
//        private Duration maxWait = Duration.ofMillis(-1);
//        private Duration timeBetweenEvictionRuns;
//
//        public Boolean getEnabled() {
//            return this.enabled;
//        }
//
//        public void setEnabled(Boolean enabled) {
//            this.enabled = enabled;
//        }
//
//        public int getMaxIdle() {
//            return this.maxIdle;
//        }
//
//        public void setMaxIdle(int maxIdle) {
//            this.maxIdle = maxIdle;
//        }
//
//        public int getMinIdle() {
//            return this.minIdle;
//        }
//
//        public void setMinIdle(int minIdle) {
//            this.minIdle = minIdle;
//        }
//
//        public int getMaxActive() {
//            return this.maxActive;
//        }
//
//        public void setMaxActive(int maxActive) {
//            this.maxActive = maxActive;
//        }
//
//        public Duration getMaxWait() {
//            return this.maxWait;
//        }
//
//        public void setMaxWait(Duration maxWait) {
//            this.maxWait = maxWait;
//        }
//
//        public Duration getTimeBetweenEvictionRuns() {
//            return this.timeBetweenEvictionRuns;
//        }
//
//        public void setTimeBetweenEvictionRuns(Duration timeBetweenEvictionRuns) {
//            this.timeBetweenEvictionRuns = timeBetweenEvictionRuns;
//        }
//
//    }
//
//
//    public static class Cluster {
//
//
//        private List<String> nodes;
//
//        private Integer maxRedirects;
//
//        public List<String> getNodes() {
//            return this.nodes;
//        }
//
//        public void setNodes(List<String> nodes) {
//            this.nodes = nodes;
//        }
//
//        public Integer getMaxRedirects() {
//            return this.maxRedirects;
//        }
//
//        public void setMaxRedirects(Integer maxRedirects) {
//            this.maxRedirects = maxRedirects;
//        }
//
//    }
//
//    /**
//     * Redis sentinel properties.
//     */
//    public static class Sentinel {
//
//        /**
//         * Name of the Redis server.
//         */
//        private String master;
//
//        /**
//         * Comma-separated list of "host:port" pairs.
//         */
//        private List<String> nodes;
//
//        /**
//         * Login username for authenticating with sentinel(s).
//         */
//        private String username;
//
//        /**
//         * Password for authenticating with sentinel(s).
//         */
//        private String password;
//
//        public String getMaster() {
//            return this.master;
//        }
//
//        public void setMaster(String master) {
//            this.master = master;
//        }
//
//        public List<String> getNodes() {
//            return this.nodes;
//        }
//
//        public void setNodes(List<String> nodes) {
//            this.nodes = nodes;
//        }
//
//        public String getUsername() {
//            return this.username;
//        }
//
//        public void setUsername(String username) {
//            this.username = username;
//        }
//
//        public String getPassword() {
//            return this.password;
//        }
//
//        public void setPassword(String password) {
//            this.password = password;
//        }
//
//    }
//
//    public static class Ssl {
//
//        /**
//         * Whether to enable SSL support. Enabled automatically if "bundle" is provided
//         * unless specified otherwise.
//         */
//        private Boolean enabled;
//
//        /**
//         * SSL bundle name.
//         */
//        private String bundle;
//
//        public boolean isEnabled() {
//            return (this.enabled != null) ? this.enabled : this.bundle != null;
//        }
//
//        public void setEnabled(boolean enabled) {
//            this.enabled = enabled;
//        }
//
//        public String getBundle() {
//            return this.bundle;
//        }
//
//        public void setBundle(String bundle) {
//            this.bundle = bundle;
//        }
//
//    }
//
//    /**
//     * Jedis client properties.
//     */
//    public static class Jedis {
//
//        /**
//         * Jedis pool configuration.
//         */
//        private final Pool pool = new Pool();
//
//        public Pool getPool() {
//            return this.pool;
//        }
//
//    }
//
//    /**
//     * Lettuce client properties.
//     */
//    public static class Lettuce {
//
//        /**
//         * Shutdown timeout.
//         */
//        private Duration shutdownTimeout = Duration.ofMillis(100);
//
//        /**
//         * Lettuce pool configuration.
//         */
//        private final Pool pool = new Pool();
//
//        private final Cluster cluster = new Cluster();
//
//        public Duration getShutdownTimeout() {
//            return this.shutdownTimeout;
//        }
//
//        public void setShutdownTimeout(Duration shutdownTimeout) {
//            this.shutdownTimeout = shutdownTimeout;
//        }
//
//        public Pool getPool() {
//            return this.pool;
//        }
//
//        public Cluster getCluster() {
//            return this.cluster;
//        }
//
//        public static class Cluster {
//
//            private final Refresh refresh = new Refresh();
//
//            public Refresh getRefresh() {
//                return this.refresh;
//            }
//
//            public static class Refresh {
//
//                /**
//                 * Whether to discover and query all cluster nodes for obtaining the
//                 * cluster topology. When set to false, only the initial seed nodes are
//                 * used as sources for topology discovery.
//                 */
//                private boolean dynamicRefreshSources = true;
//
//                /**
//                 * Cluster topology refresh period.
//                 */
//                private Duration period;
//
//                /**
//                 * Whether adaptive topology refreshing using all available refresh
//                 * triggers should be used.
//                 */
//                private boolean adaptive;
//
//                public boolean isDynamicRefreshSources() {
//                    return this.dynamicRefreshSources;
//                }
//
//                public void setDynamicRefreshSources(boolean dynamicRefreshSources) {
//                    this.dynamicRefreshSources = dynamicRefreshSources;
//                }
//
//                public Duration getPeriod() {
//                    return this.period;
//                }
//
//                public void setPeriod(Duration period) {
//                    this.period = period;
//                }
//
//                public boolean isAdaptive() {
//                    return this.adaptive;
//                }
//
//                public void setAdaptive(boolean adaptive) {
//                    this.adaptive = adaptive;
//                }
//
//            }
//
//        }
//
//    }
//
//}
